package model

import (
	"bufio"
	"fmt"
	"gitee.com/liumou_site/gf"
	"gitee.com/liumou_site/logger"
	"os"
	"strings"
)

// ReadUrlFile 读取url文件
func (info *Info) ReadUrlFile() {
	logger.Info("开始读取文件: ", info.UrlFile)
	info.Err = nil
	f := gf.NewFile(info.UrlFile)
	f.IsFile()
	if !f.IsFiles {
		logger.Error("文件不存在: ", info.UrlFile)
		info.Err = fmt.Errorf("文件不存在: %s", info.UrlFile)
		os.Exit(2)
	}
	// 打开文件
	file, err := os.Open(info.UrlFile)
	if err != nil {
		logger.Error(err)
		info.Err = err
		os.Exit(4)
	}
	defer func(file *os.File) {
		err := file.Close()
		if err != nil {
			logger.Error(err)
		}
	}(file)

	// 读取文件
	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		line := scanner.Text()
		// 去除前后空白字符
		line = strings.TrimSpace(line)
		// 跳过空行和注释行（以#开头）
		if line == "" || strings.HasPrefix(line, "#") {
			continue
		}
		info.Urls = append(info.Urls, line)
	}

	// 错误处理
	if err := scanner.Err(); err != nil {
		info.Err = err
		logger.Error(err)
		os.Exit(2)
	}
	logger.Info("读取文件完成: ", info.UrlFile)
	logger.Info("获取的URL数量: ", len(info.Urls))
}
